package cn.xawl.gulimall.product.service;

import cn.xawl.gulimall.product.entity.AttrAttrgroupRelationEntity;
import cn.xawl.gulimall.product.entity.AttrEntity;
import cn.xawl.gulimall.product.vo.AttrGroupWithAttrsVo;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.xawl.common.utils.PageUtils;
import cn.xawl.gulimall.product.entity.AttrGroupEntity;

import java.util.List;
import java.util.Map;

/**
 * 属性分组
 *
 * @author lh
 * @email lhm49869999@163.com
 * @date 2020-06-17 13:44:59
 */
public interface AttrGroupService extends IService<AttrGroupEntity> {

    PageUtils queryPage(Map<String, Object> params);

    PageUtils queryPage(Map<String, Object> params, Long catalogId);

    /**
     * //根据分类 id 查询该分类的完整路径
     * @param catalogId 分类id
     * @return 路径数组
     */
    List<Long> getCatalogPathById(Long catalogId);

    /**
     * 获取指定分组关联的所有属性
     * @param attrgroupId 指定分组的id
     */
    List<AttrEntity> getAttrByGroup(Long attrgroupId);

    /**
     * 删除属性与分组的关联关系
     * @param relationEntities 要删除的关联关系
     */
    void deleteRelations(List<AttrAttrgroupRelationEntity> relationEntities);

    /**
     * 查询该分组id下的其他没有关联过的属性
     * @param params 分月参数以及模糊查询关键字
     * @param attrgroupId 分组属性id
     */
    PageUtils getAttrsByOtherRelation(Map<String, Object> params, Long attrgroupId);

    /**
     * 批量添加属性与属性分组的关联
     * @param list 参数列表
     */
    void addBatchRelation(List<AttrAttrgroupRelationEntity> list);


    /**
     * 获取分类下所有分组&关联属性
     * @param catalogId 分类id
     */
    List<AttrGroupWithAttrsVo> getAttrGroupWithAttrsByCatalogId(Long catalogId);
}

